package org.apache.axis2.tool.util; import java.io.File; import java.io.IOException; import javax.xml.transform.Source; import javax.xml.transform.stream.StreamSource; import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; import javax.xml.validation.Validator; import org.apache.axis2.tool.service.eclipse.plugin.ServiceArchiver; import org.apache.axis2.tool.util.Constants.ServiceConstants; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.xml.sax.SAXException; public class ServicePluginUtils { private static final Log logger = LogFactory.getLog(ServicePluginUtils.class); /** * Validates the given xml file against the axis2 services schema. * @return return true if the xml is valid */ public static boolean isServicesXMLValid(String servicesXmlPath){ SchemaFactory factory = SchemaFactory.newInstance(ServiceConstants.XML_SCHEMA); try { String resourcePath=addAnotherNodeToPath( ServiceConstants.RESOURCE_FOLDER, ServiceConstants.SERVICES_XSD_SCHEMA_NAME); Schema schema = factory.newSchema( ServiceArchiver.getDefault().getBundle().getEntry(resourcePath)); Validator validator = schema.newValidator(); Source source = new StreamSource(new File(servicesXmlPath)); validator.validate(source); return true; } catch (SAXException e) { logger.debug("Schema addition failed",e); return false; } catch (IOException e) { logger.debug("Schema validation failed",e); return false; } } public static String addAnotherNodeToPath(String currentPath, String newNode) { return currentPath + File.separator + newNode; } }